package logic

import (
	"bluebell/dao/mysql"
	"bluebell/models"
	"bluebell/pkg/jwt"
	"bluebell/pkg/snowflake"
	"fmt"
)

// 存放业务逻辑的代码
func SignUp(p *models.ParamSignUp) (err error) {
	// 判断是否是新用户
	exisit, err := mysql.CheckUserExist(p.Username)
	if err != nil {
		// 数据库查询出错
		return
	}
	if exisit {
		return mysql.ErrorUserExist
	}
	// 生成uid
	userID, _ := snowflake.GetID()
	// 构造 user实例
	u := models.User{
		UserID:   userID,
		Password: p.Password,
		Username: p.Username,
	}
	// 存进数据库
	err = mysql.InsertUser(&u)
	if err != nil {
		return
	}
	return
}

func LogIN(p *models.ParamLogIN) (err error, token string) {
	// 查询用户是否存在，以及密码是否正确
	err, user := mysql.CheckUserExistAndPasswordTrue(p.Username, p.Password)
	if err != nil {
		return
	}
	//user.UserID
	fmt.Println(user)
	// 生成 JWT token
	token, _, err = jwt.GenToken(user.UserID)

	return

}
